The World Wide Web has become a ubiquitous part of modern life. Correspondingly, web development is a burgeoning industry. Web development differs from traditional software development in several profound ways.
A complex web site can be made up of several different pages, whose content can be generated from many different files. Content can be divided up among the files in an infinite number of ways by a web developer who writes the code in the files that when processed by the web server and displayed in a browser results in the page a viewer sees. As the web server processes the files, it frequently generates additional content along the way. A few lines of code processed by the web server can be responsible for the generation of hundreds of lines of code in the final web page. When a client makes a request to a web server, the web server determines what files compose the response, assembles them into a single file, and sends the response back to the client. After a browser has loaded the documents received from the web server into the browser, a scripting language that adds interactive features to the web page may add, delete, or modify contents in the document.
The way web processing works affects web development. When a web developer wants to change part of a web site, the web developer has to know which of the files at the web server associated with the web site is the file that has to be changed. Furthermore, today, there is no way to know what the server generated content will be until the code has been processed by the web server and the client has received the response, so the web developer can only guess at the effect his changes will make. Scripting languages frequently run on HTML files to add application-like functionality to the static HTML documents. After a scripting language executes, the document presented by the browser differs from the original file that came from the server. There is presently no automated way to map an element selected in the browser back to the file received from the web server.